package com.wlc.base.array;

import java.util.Arrays;

/**
 * @author 王立朝 wanglichao@champion-credit.com
 * @description 冒泡排序
 * @date 2021-06-24 16:37
 */
public class ArrayDemo04 {
    public static int[] getArray() {
        int[] array = {1,2,3,4,5,87,7};
        return array;
    }

    public int[] sort(int[] array) {
        // 外层循环控制比较的轮数
        // array.length-1 , 减1 是因为最后一个数必然是最大的，不需要再进行比较了
        int sum = 0;
        int result = 0;
        for (int i = 0; i < array.length-1; i++) {
            // 减少无效排序的次数，假如已经拍好序了，就无需再进行比较了
            boolean flag = false;
            // 内层循环2个2个比较
            // array.length-1-i； 减i 是因为每一次比较之后，都会得出一个最大值/或者最小值
            for (int j = 0; j < array.length-1 - i; j++) {
                if (array[j + 1] < array[j]) {
                    result = array[j + 1];
                    array[j + 1] = array[j];
                    array[j] = result;
                    flag = true;
                }
                sum += 1;
            }
            if(!flag){
                break;
            }
            System.out.print("第" + i + "轮比较了" + sum + "次  ");
            System.out.println(Arrays.toString(array));
            sum = 0;

        }

        return array;
    }

    public void method01() {
        System.out.println(Arrays.toString(sort(getArray())));
    }

    public static void main(String[] args) {
        new ArrayDemo04().method01();
    }
}
